package com.j48.entrancegurad.mapper;

import com.j48.entrancegurad.model.Repair;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

/**
 * character表操作
 */
@Repository
@Mapper
public interface RepairMapper {
    /**
     * 查询所有报修记录
     * @return 报修记录列表
     */
    @Select("select * from `repair`")
    public ArrayList<Repair> selectAll();

    /**
     * 查询所有未处理完的报修记录
     * @return 报修记录列表
     */
    @Select("select * from `repair` where repair_status in(0,1)")
    public ArrayList<Repair> selectAllAble();

    /**
     * 按编号查询报修记录
     * @param repair 查询条件
     * @return 查询结果
     */
    @Select("select * from `repair` where repair_id=#{repair_id}")
    public Repair selectById(Repair repair);
    /**
     * 按用户编号查询报修记录
     * @param repair 查询条件
     * @return 查询结果
     */
    @Select("select * from `repair` where repair_user_id=#{repair_user_id} and repair_status in(0,1)")
    public List<Repair> selectByUserAble(Repair repair);
    /**
     * 按用户编号查询报修记录
     * @param repair 查询条件
     * @return 查询结果
     */
    @Select("select * from `repair` where repair_user_id=#{repair_user_id}")
    public List<Repair> selectByUser(Repair repair);
    /**
     * 添加报修记录
     * @param repair 被添加的报修记录
     * @return 影响数据库数据条数
     */
    @Insert("insert into `repair`(repair_describe,repair_photourl,repair_user_id,repair_createtime,repair_status) values (#{repair_describe},#{repair_photourl},#{repair_user_id},#{repair_createtime},0)")
    public int insert(Repair repair);
    /**
     * 添加报修记录
     * @param repair 被添加的报修记录
     * @return 影响数据库数据条数
     */
    @Insert("insert into `repair`(repair_describe,repair_user_id,repair_createtime,repair_status) values (#{repair_describe},#{repair_user_id},#{repair_createtime},0)")
    public int insert1(Repair repair);

    /**
     * 更新报修信息
     * @param repair 更新后的报修情况
     * @return 影响数据库数据条数
     */
    @Update("update `repair` set repair_admin_id=#{repair_admin_id},repair_status=#{repair_status} where repair_id=#{repair_id}")
    public int update(Repair repair);

    /**
     * 删除报修记录
     * @param repair 需要被删除的报修记录
     * @return 影响数据库数据条数
     */
    @Delete("delete from `repair` where repair_id=#{repair_id}")
    public int delete(Repair repair);

    /**
     * 将未处理状态的报修记录调整为处理中
     * @param repair 需要被调整状态的报修记录
     * @return 影响数据库数据条数
     */
    @Update("update `repair` set repair_status=1,repair_admin_id=#{repair_admin_id},repair_lasttime=#{repair_lasttime} where repair_id=#{repair_id}")
    public int modify(Repair repair);

    /**
     * 将处理中状态的报修记录调整为处理完毕
     * @param repair 需要被调整状态的报修记录
     * @return 影响数据库数据条数
     */
    @Update("update `repair` set repair_status=2,repair_admin_id=#{repair_admin_id},repair_lasttime=#{repair_lasttime} where repair_id=#{repair_id}")
    public int over(Repair repair);
}
